<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Langage de script</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Langage_de_script"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Langage_de_script rootpage-Langage_de_script skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Langage de script</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr"><p>Un <b>langage de script</b> est un type de <a href="Langage_de_programmation" title="Langage de programmation">langage de programmation</a> <a href="Interpr%C3%A8te_(informatique)" title="Interprète (informatique)">interprété</a>, sans <a href="Compilateur" title="Compilateur">compilation</a> explicite. Un langage de script permet de manipuler les fonctionnalités d'un système informatique configuré pour fournir à l'<a href="Interpr%C3%A8te_(informatique)" title="Interprète (informatique)">interpréteur</a> de ce langage un environnement et une <a href="Interface_(informatique)" title="Interface (informatique)">interface</a> qui déterminent les possibilités de celui-ci<sup class="need_ref_tag" style="padding-left:2px;">[pas clair]</sup>. Le langage de script peut alors s'affranchir des contraintes des commandes de <a href="Bas_niveau" class="mw-redirect" title="Bas niveau">bas niveau</a> — prises en charge par l'intermédiaire de l'interface — et bénéficier d'une <a href="Syntaxe" title="Syntaxe">syntaxe</a> de <a href="Langage_de_haut_niveau" class="mw-redirect" title="Langage de haut niveau">haut niveau</a>.
</p><p>Les langages de scripts sont des langages faciles à mettre en œuvre, et disposant de puissantes <a href="Fonction_primitive" title="Fonction primitive">primitives</a> et/ou d'une grande <a href="Biblioth%C3%A8que_logicielle" title="Bibliothèque logicielle">bibliothèque</a>.
</p><p>Les langages de script sont généralement exécutés à partir de fichiers (dits, précisément, <i>scripts</i>) contenant le <a href="Code_source" title="Code source">code source</a> du programme qui sera interprété. Il ne faut pas confondre le <b>langage de script</b>, qui est un langage de programmation, et le terme <b>script</b>, qui désigne les programmes écrits en langage de script.
</p><p>Historiquement, les langages de script ont été créés pour raccourcir le processus traditionnel de développement édition-<a href="Compilateur" title="Compilateur">compilation</a>-<a href="%C3%89dition_des_liens" class="mw-redirect" title="Édition des liens">édition des liens</a>-<a href="Ex%C3%A9cution_(informatique)" title="Exécution (informatique)">exécution</a> propre aux <a href="Langage_compil%C3%A9" class="mw-redirect" title="Langage compilé">langages compilés</a>. Les premiers langages étaient souvent appelés <span class="citation">« langage de commande »</span> ou <span class="citation">« langage d'enchaînement des travaux »</span> (<a href="Job_Control_Language" title="Job Control Language">JCL</a> : <span class="lang-en" lang="en"><i>Job Control Language</i></span>) car ils permettaient simplement d'automatiser une succession de commandes simples, à la manière d'un « script » de théâtre<sup class="need_ref_tag" style="padding-left:2px;">[<abbr class="abbr" title="référence">réf.</abbr> souhaitée]</sup>. Par la suite, ils furent munis d'exécutions conditionnelles implicites (<a href="IBM_1130" class="mw-redirect" title="IBM 1130">IBM 1130</a>) ou explicites (JCL), et enfin d'ordres de boucle et d'opérateurs les transformant en quasi-<a href="Langage_de_programmation" title="Langage de programmation">langages de programmation</a>.
</p><p>Le terme « langage de script » désigne parfois n'importe quel langage de programmation interprété. En pratique, le caractère interprété ou compilé se rapporte à une <b>implémentation</b> particulière, mais pas à un langage.
</p><p>Dans un sens différent, on appelle aussi <i>langage de script</i> un langage où les éléments visuels sont considérés comme des personnages placés sur une « scène », personnages dont le comportement est défini par un <i>script</i>. L'un des premiers langages de ce type dans le monde de la micro-informatique a été le langage <a href="HyperTalk" class="mw-redirect" title="HyperTalk">HyperTalk</a> (<a href="Programmation_orient%C3%A9e_objet" title="Programmation orientée objet">langage orienté objet</a> dérivé de <a href="Smalltalk" title="Smalltalk">Smalltalk</a>) très proche du <a href="Langage_naturel" title="Langage naturel">langage naturel</a>, que Dan Winkler crée en <a href="1987" title="1987">1987</a> pour commander le programme <a href="HyperCard" title="HyperCard">HyperCard</a> sur <a href="Macintosh" title="Macintosh">MacIntosh</a>. Le langage <a href="Lingo" title="Lingo">Lingo</a> de <a href="Macromedia_Director" class="mw-redirect" title="Macromedia Director">Macromedia Director</a> est un descendant direct d'HyperTalk.
</p><p>Le terme <i>langage de script</i> a souvent une connotation négative, on préfère alors parler de <a href="Langage_de_programmation_dynamique" title="Langage de programmation dynamique">langage de programmation dynamique</a> quand c'est possible.
</p>
<div class="mw-heading mw-heading2"><h2 id="Propriétés_des_langages_de_script"><span id="Propri.C3.A9t.C3.A9s_des_langages_de_script"></span>Propriétés des langages de script</h2></div>
<p>Les langages de script sont des langages sans <a href="Compilateur" title="Compilateur">compilation</a> explicite ; ils sont soit compilés à la volée avant chaque <a href="Ex%C3%A9cution_(informatique)" title="Exécution (informatique)">exécution</a>, soit exécutés directement, sans compilation préalable. Ils sont faciles à mettre en œuvre, cela permet leur exécution dès leur écriture. Ils sont équipés de fortes <a href="Fonction_primitive" title="Fonction primitive">primitives</a> et/ou d’une large <a href="Biblioth%C3%A8que_logicielle" title="Bibliothèque logicielle">bibliothèque</a>, cela permet de programmer rapidement et de façon concise des tâches complexes<sup id="cite_ref-:0_1-0" class="reference"><a href="#cite_note-:0-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>.
</p><p>Ils ont également plusieurs propriétés<sup id="cite_ref-:0_1-1" class="reference"><a href="#cite_note-:0-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> :
</p>
<ul><li>Gestion automatique de la mémoire. Lors de la création d'un <a href="Variable_(informatique)" title="Variable (informatique)">variable</a> (chaîne de caractère, tableau d'entier, etc), une <a href="Allocation_de_m%C3%A9moire" title="Allocation de mémoire">allocation de mémoire</a> implicite a lieu, et cette mémoire est libérée lorsqu'elle ne sera plus atteignable par les données du <a href="Programme_informatique" title="Programme informatique">programme</a> ;</li>
<li><a href="Typage_dynamique" title="Typage dynamique">Typage dynamique</a>. Les vérifications sont réalisées pendant l'exécution ;</li>
<li>Déclaration optionnelle des variables. Les langages scripts n'imposent généralement pas la déclaration des variables. Celles-ci peuvent être globales par défaut (<a href="Bourne-Again_shell" title="Bourne-Again shell">bash</a>) ou locales par défaut (<a href="Python_(langage)" title="Python (langage)">Python</a>, <a href="PHP" title="PHP">PHP</a>) ;</li>
<li>Expansion de variable. Les langages de script permettent généralement l'insertion de variable dans les <a href="Cha%C3%AEne_de_caract%C3%A8res" title="Chaîne de caractères">chaînes de caractères</a>, avec une syntaxe spéciale permettant de substituer une valeur à une variable ou à un calcul ;</li>
<li>Utilisation d'<a href="Expression_r%C3%A9guli%C3%A8re" title="Expression régulière">expressions rationnelles</a> ;</li>
<li>Utilisation de <a href="Tableau_associatif" title="Tableau associatif">tableaux associatifs</a>.</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Propriété_des_scripts"><span id="Propri.C3.A9t.C3.A9_des_scripts"></span>Propriété des scripts</h3></div>
<p>On appelle <b>script</b> les programmes informatiques écrits en langage de script.
</p><p>Dans le sens le plus traditionnel, qui est celui des <a href="Scripts_shell" class="mw-redirect" title="Scripts shell">scripts shell</a>, un script sert principalement à lancer et coordonner l'exécution de programmes.
</p>
<ul><li>Dans sa version la plus simple, un script ne spécifie qu'une suite de programmes à appeler dans un ordre donné (par exemple <a href="%C3%89diteur_de_texte" title="Éditeur de texte">éditeur de texte</a>, compilateur, éditeur de liens et exécution du <a href="Code_objet" title="Code objet">code objet</a>). Cela crée rapidement des inefficiences : à quoi bon en effet tenter de charger et d'exécuter un programme dont la compilation a échoué ?</li>
<li>On y ajoute donc assez vite une possibilité d'exécution conditionnelle simple (||, &&) en fonction du résultat de l'étape immédiatement précédente (il ne sert à rien d'exécuter si la compilation est mauvaise).</li>
<li>La possibilité d'y employer des <a href="Variable_(informatique)" title="Variable (informatique)">variables</a>, des <a href="Param%C3%A8tre_(programmation_informatique)" title="Paramètre (programmation informatique)">paramètres</a>, des <a href="Structure_de_contr%C3%B4le" title="Structure de contrôle">structures de contrôle</a> (répétition, exécution conditionnelle), etc. fait des langages de scripts de véritables langages de programmation.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Liste_des_langages_de_script">Liste des langages de script</h2></div>
<p>Les langages de script les plus connus sont :
</p>
<ul><li><a href="AppleScript" title="AppleScript">AppleScript</a> <i>(peut être compilé)</i> ;</li>
<li><a href="AutoIt" title="AutoIt">AutoIt</a> <i>(peut être compilé)</i> ;</li>
<li><a href="Cmd.exe" class="mw-redirect" title="Cmd.exe">Cmd (anciennement Command)</a>, <a href="Windows_PowerShell" title="Windows PowerShell">Windows PowerShell</a> pour <a href="Microsoft_Windows" title="Microsoft Windows">Windows</a> ;</li>
<li><a href="GNU_Octave" title="GNU Octave">GNU Octave</a></li>
<li><a href="Groovy_(langage)" title="Groovy (langage)">Google Apps Script</a>;</li>
<li><a href="Groovy_(langage)" title="Groovy (langage)">Groovy</a> ;</li>
<li><a href="JavaScript" title="JavaScript">JavaScript</a> ;</li>
<li><a href="KiXtart" title="KiXtart">KiXtart</a> ;</li>
<li><a href="Lua" title="Lua">Lua</a> ;</li>
<li><a href="Lisp" title="Lisp">Lisp</a> (peut être compilé<i>)</i> ;</li>
<li><a href="Matlab" class="mw-redirect" title="Matlab">Matlab</a></li>
<li><a href="PHP" title="PHP">PHP</a> (peut être compilé<i>)</i> ;</li>
<li><a href="Perl_(langage)" title="Perl (langage)">Perl</a> (peut être compilé<i>)</i> ;</li>
<li><a href="Python_(langage)" title="Python (langage)">Python</a> <i>(peut être compilé) </i> ;</li>
<li><a href="Rebol" title="Rebol">Rebol</a> ;</li>
<li><a href="Rexx" class="mw-redirect" title="Rexx">Rexx</a> ;</li>
<li><a href="Ruby" title="Ruby">Ruby</a> ;</li>
<li><a href="Scheme" title="Scheme">Scheme</a> (peut être compilé<i>)</i> ;</li>
<li><a href="Script_shell" title="Script shell">Script shell</a> : <a href="Bourne_shell" title="Bourne shell">sh</a> ; <a href="Bourne-Again_shell" title="Bourne-Again shell">bash</a> ; <a href="Korn_shell" title="Korn shell">ksh</a> ; <a href="Zsh" class="mw-redirect" title="Zsh">zsh</a> ; <a href="Csh" class="mw-redirect" title="Csh">csh</a> ; <a href="Tcsh" title="Tcsh">tcsh</a> ; <a href="Friendly_Interactive_Shell" title="Friendly Interactive Shell">fish</a> pour <a href="GNU/Linux" class="mw-redirect" title="GNU/Linux">GNU/Linux</a> et <a href="Unix" title="Unix">Unix</a> ;</li>
<li><a href="Tool_Command_Language" title="Tool Command Language">Tcl/Tk</a>;</li>
<li><a href="VBScript" title="VBScript">VBScript</a> ;</li>
<li>etc.</li></ul>
<p>Mais il en existe beaucoup d'autres.
</p>
<div class="mw-heading mw-heading2"><h2 id="Utilisation_des_scripts">Utilisation des scripts</h2></div>
<p>Les scripts sont utilisés à différents niveaux :
</p>
<ul><li>côté <a href="Syst%C3%A8me_d'exploitation" title="Système d'exploitation">OS</a> comme une méthode d'automatisation (<a href="Visual_Basic_for_Applications" title="Visual Basic for Applications">VBA de Microsoft</a>, <a href="Python_(langage)" title="Python (langage)">Python</a>). Notamment, cela permet d'<a href="Administrateur_syst%C3%A8me" title="Administrateur système">administrer un système</a> en recherchant à intervalles réguliers des motifs suspects dans les <a href="Historique_(informatique)" title="Historique (informatique)">fichiers logs</a><sup id="cite_ref-:0_1-2" class="reference"><a href="#cite_note-:0-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>.</li>
<li>côté <a href="Serveur_web" title="Serveur web">serveur web</a> dits <a href="Server_Side_Includes" title="Server Side Includes">Server Side Includes</a> comme une méthode pour générer des <a href="Page_web_dynamique" title="Page web dynamique">pages dynamiques</a> (<a href="JavaServer_Pages" class="mw-redirect" title="JavaServer Pages">JSP</a>, <a href="PHP" title="PHP">PHP</a>, <a href="Active_Server_Pages" title="Active Server Pages">ASP</a>, <a href="ASP.NET" title="ASP.NET">ASP.NET</a>) ;</li>
<li>côté <a href="Navigateur_web" title="Navigateur web">navigateur</a> dits <a href="Client_side" title="Client side">Client Side</a> sous forme d'<a href="Applet" title="Applet">Applet</a> (<a href="Actionscript" class="mw-redirect" title="Actionscript">actionscript</a>, <a href="C_(langage)" title="C (langage)">C#</a>, <a href="Applet_java" class="mw-redirect" title="Applet java">Applet java</a>) d'automatisation (VBA de Microsoft). C'est un <a href="Code_binaire" title="Code binaire">langage binaire</a> ;</li>
<li><a href="Interface_graphique" title="Interface graphique">interface graphique</a> dit gui scripts, permettant de simuler des déplacements de la souris et des pressions de touches sur le clavier (bibliothèque <a href="Tkinter" title="Tkinter">Tkinter</a> de <a href="Python_(langage)" title="Python (langage)">Python</a>).</li>
<li>côté <a href="Logiciel" title="Logiciel">logiciel</a>, les langages scripts sont parfois utilisés comme langage d'extension embarqué, c'est-à-dire langage permettant de se doter de fonctionnalités nouvelles construites comme des enchaînements de fonctionnalités existantes<sup id="cite_ref-:0_1-3" class="reference"><a href="#cite_note-:0-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Quelques_avis">Quelques avis</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Larry_Wall">Larry Wall</h3></div>
<p><a href="Larry_Wall" title="Larry Wall">Larry Wall</a> qui est le concepteur du langage de programmation <a href="Perl_(langage)" title="Perl (langage)">Perl</a> a dit :
</p>
<ul><li>« <i><span class="lang-en" lang="en">when I was a <a href="RSTS" title="RSTS">RSTS</a> programmer on a PDP-11, I certainly treated BASIC as a scripting language, at least in terms of rapid prototyping and process control. I'm sure it warped my brain forever</span></i> »</li></ul>
<dl><dd><i>(Quand je programmais en <a href="RSTS" title="RSTS">RSTS</a> sur un <a href="PDP-11" title="PDP-11">PDP-11</a>, j'ai effectivement considéré le <a href="BASIC" class="mw-redirect" title="BASIC">BASIC</a> comme un langage de script, au moins à cause du prototypage facile et de la commande de processus pour lesquels on l'employait. Je suis certain que ça m'a déformé intellectuellement à long terme.)</i></dd></dl>
<ul><li>« <i><span class="lang-en" lang="en">basically, scripting is not a technical term. When we call something a scripting language, we're primarily making a linguistic and cultural judgment, not a technical judgment</span></i> »</li></ul>
<dl><dd><i>(L'expression "Langage de script" ne constitue pas un terme technique ; quand on utilise cette expression, on fait part d'une appréciation linguistique et culturelle, on ne porte pas un jugement technique.)</i></dd></dl>
<p>— <a rel="nofollow" class="external text" href="http://www.perl.com/pub/a/2007/12/06/soto-11.html">« <i>Programming is Hard, Let's Go Scripting...</i> »</a>
— <a rel="nofollow" class="external text" href="https://www.dcit.ch/vba-compared-to-python/">« <i>The Obsolescence of VBA Compared to Python</i> »</a>
</p>
<div class="mw-heading mw-heading2"><h2 id="Voir_aussi">Voir aussi</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Articles_connexes">Articles connexes</h3></div>
<ul><li><a href="Shell_(informatique)" class="mw-redirect" title="Shell (informatique)">Shell</a></li>
<li><a href="Langage_de_programmation_dynamique" title="Langage de programmation dynamique">Langage de programmation dynamique</a></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Références"><span id="R.C3.A9f.C3.A9rences"></span>Références</h3></div>
<div class="references-small decimal" style=""><div class="mw-references-wrap"><ol class="references">
<li id="cite_note-:0-1"><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.techniques-ingenieur.fr/base-documentaire/technologies-de-l-information-th9/programmation-42304210/langages-de-scripts-h3118/"><cite style="font-style:normal;">Langages de scripts</cite></a> », sur <span class="italique">Techniques de l'Ingénieur</span> <small style="line-height:1em;">(<a href="Digital_Object_Identifier" title="Digital Object Identifier">DOI</a> <span class=" noarchive nowrap"><a rel="nofollow" class="external text" href="https://dx.doi.org/10.51257/a-v4-h3118">10.51257/a-v4-h3118</a></span>, consulté le <time class="nowrap" datetime="2025-01-07" data-sort-value="2025-01-07">7 janvier 2025</time>)</small></span></span>
</li>
</ol></div>
</div>
<div class="mw-heading mw-heading3"><h3 id="Liens_externes">Liens externes</h3></div>
<ul><li><a href="John_Ousterhout" title="John Ousterhout">John K. Ousterhout</a>, <i>Scripting: Higher Level Programming for the 21st Century</i>, IEEE Computer magazine, March 1998 <a rel="nofollow" class="external autonumber" href="http://www.tcl.tk/doc/scripting.html">[1]</a></li></ul>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de la programmation informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2025-10-09" href="https://fr.wikipedia.org/wiki/?title=Langage_de_script&oldid=229614818">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>